17 UVA10170 The Hotel with Infinite Rooms
內容
HaluaRuti市有一家奇怪的酒店,房間無限。
來這家酒店的團體,請遵循以下規則:
a)同時,只有能有一個旅行團可以租用酒店。
b)每個旅行團在入住日的早晨到達,並在退房日的晚上離開酒店。
c)後入住的旅行團需要在前一團退房後的隔天早晨,才能入住
d)除了第一團,其他旅行團人數都比前一團多一人
e)有n名成員的旅行團則會在酒店停留n天。
例如:
如果一組四個成員的旅行團在8月1日早晨到達,則它將在8月4日晚上離開酒店
下一組五個成員將在8月5日早晨入住並且停留五天,依此類推。
現在給定第一組旅行團人數,您必須回答在指定日期入住的旅行團人數。
輸入說明
輸入每一行包含數字S (1 ≤ S ≤ 10000)和D (1 ≤ D < 10^15)。
S表示第一組旅行團人數,D表示必須在第D天(從1開始)查找入住酒店的旅行團人數。
輸出說明
對於每行輸入,輸出在第D天入住的旅行團人數。
#匯入必要的模組
from sys import stdin
import math
#逐行讀取輸入
for f in stdin:
# 初始化變數 all 為 0
all = 0
#從輸入中讀取兩個整數,分別為 S 和 D
S, D = map(int, f.split())
#計算新的 f 值
f = (2 * D) + (S * S) - S
#使用一元二次方程式的解公式,計算 ans
ans = ((-1 + ((1 - 4 * (-f))**0.5)) / 2)
#將 ans 四捨五入到最接近的整數並輸出
print(math.ceil(ans))